`ifndef AHBL_MST_SINGLE_WRITE16_H0000_SLV_READY_SV
`define AHBL_MST_SINGLE_WRITE16_H0000_SLV_READY_SV


class ahbl_mst_single_write16_h0000_slv_ready extends ahbl2apb_base_test;

	ahbl_mst_write_h0000_seq		ahbl_seq_0;
	ahbl_mst_read_hFFFF_seq			ahbl_seq_1;
  apb_slv_ready_seq						apb_seq_0;
  apb_slv_nrdy_seq						apb_seq_1;

	`uvm_component_utils(ahbl_mst_single_write16_h0000_slv_ready)

	function new(string name = "ahbl_mst_single_write16_h0000_slv_ready", uvm_component parent = null);
		super.new(name, parent);
	endfunction : new

	function void build_phase(uvm_phase phase);
		super.build_phase(phase);

		ahbl_seq_0 	= ahbl_mst_write_h0000_seq::type_id::create("ahbl_seq_0");
		ahbl_seq_1 	= ahbl_mst_read_hFFFF_seq::type_id::create("ahbl_seq_1");
		apb_seq_0 	= apb_slv_ready_seq::type_id::create("apb_seq_0");
		apb_seq_1 	= apb_slv_nrdy_seq::type_id::create("apb_seq_1");
	endfunction : build_phase

	task main_phase(uvm_phase phase);
		super.main_phase(phase);

		phase.raise_objection(this);
		#1us;
		fork
			begin
				ahbl_seq_0.start(env.ahbl_mst_agt.sequencer);
				ahbl_seq_1.start(env.ahbl_mst_agt.sequencer);
			end
			begin
				apb_seq_0.start(env.apb_slv_agt.sequencer);
				apb_seq_1.start(env.apb_slv_agt.sequencer);
			end
		join
		phase.drop_objection(this);
	endtask : main_phase

endclass : ahbl_mst_single_write16_h0000_slv_ready


`endif // AHBL_MST_SINGLE_WRITE16_H0000_SLV_READY_SV
